# /************** I2C Address *****************/
# SAD[0] = 0
LSM6DSL_ACC_GYRO_I2C_ADDRESS_LOW = 0xD4
# SAD[0] = 1
LSM6DSL_ACC_GYRO_I2C_ADDRESS_HIGH = 0xD6

# /************** Who am I =*******************/
LSM6DSL_ACC_GYRO_WHO_AM_I = 0x6A

# /************** Device Register *******************/
LSM6DSL_ACC_GYRO_FUNC_CFG_ACCESS = 0X01

LSM6DSL_ACC_GYRO_SENSOR_SYNC_TIME = 0X04
LSM6DSL_ACC_GYRO_SENSOR_RES_RATIO = 0X05

LSM6DSL_ACC_GYRO_FIFO_CTRL1 = 0X06
LSM6DSL_ACC_GYRO_FIFO_CTRL2 = 0X07
LSM6DSL_ACC_GYRO_FIFO_CTRL3 = 0X08
LSM6DSL_ACC_GYRO_FIFO_CTRL4 = 0X09
LSM6DSL_ACC_GYRO_FIFO_CTRL5 = 0X0A

LSM6DSL_ACC_GYRO_DRDY_PULSE_CFG_G = 0X0B
LSM6DSL_ACC_GYRO_INT1_CTRL = 0X0D
LSM6DSL_ACC_GYRO_INT2_CTRL = 0X0E
LSM6DSL_ACC_GYRO_WHO_AM_I_REG = 0X0F
LSM6DSL_ACC_GYRO_CTRL1_XL = 0X10
LSM6DSL_ACC_GYRO_CTRL2_G = 0X11
LSM6DSL_ACC_GYRO_CTRL3_C = 0X12
LSM6DSL_ACC_GYRO_CTRL4_C = 0X13
LSM6DSL_ACC_GYRO_CTRL5_C = 0X14
LSM6DSL_ACC_GYRO_CTRL6_G = 0X15
LSM6DSL_ACC_GYRO_CTRL7_G = 0X16
LSM6DSL_ACC_GYRO_CTRL8_XL = 0X17
LSM6DSL_ACC_GYRO_CTRL9_XL = 0X18
LSM6DSL_ACC_GYRO_CTRL10_C = 0X19

LSM6DSL_ACC_GYRO_MASTER_CONFIG = 0X1A
LSM6DSL_ACC_GYRO_WAKE_UP_SRC = 0X1B
LSM6DSL_ACC_GYRO_TAP_SRC = 0X1C
LSM6DSL_ACC_GYRO_D6D_SRC = 0X1D
LSM6DSL_ACC_GYRO_STATUS_REG = 0X1E

LSM6DSL_ACC_GYRO_OUT_TEMP_L = 0X20
LSM6DSL_ACC_GYRO_OUT_TEMP_H = 0X21
LSM6DSL_ACC_GYRO_OUTX_L_G = 0X22
LSM6DSL_ACC_GYRO_OUTX_H_G = 0X23
LSM6DSL_ACC_GYRO_OUTY_L_G = 0X24
LSM6DSL_ACC_GYRO_OUTY_H_G = 0X25
LSM6DSL_ACC_GYRO_OUTZ_L_G = 0X26
LSM6DSL_ACC_GYRO_OUTZ_H_G = 0X27
LSM6DSL_ACC_GYRO_OUTX_L_XL = 0X28
LSM6DSL_ACC_GYRO_OUTX_H_XL = 0X29
LSM6DSL_ACC_GYRO_OUTY_L_XL = 0X2A
LSM6DSL_ACC_GYRO_OUTY_H_XL = 0X2B
LSM6DSL_ACC_GYRO_OUTZ_L_XL = 0X2C
LSM6DSL_ACC_GYRO_OUTZ_H_XL = 0X2D
LSM6DSL_ACC_GYRO_SENSORHUB1_REG = 0X2E
LSM6DSL_ACC_GYRO_SENSORHUB2_REG = 0X2F
LSM6DSL_ACC_GYRO_SENSORHUB3_REG = 0X30
LSM6DSL_ACC_GYRO_SENSORHUB4_REG = 0X31
LSM6DSL_ACC_GYRO_SENSORHUB5_REG = 0X32
LSM6DSL_ACC_GYRO_SENSORHUB6_REG = 0X33
LSM6DSL_ACC_GYRO_SENSORHUB7_REG = 0X34
LSM6DSL_ACC_GYRO_SENSORHUB8_REG = 0X35
LSM6DSL_ACC_GYRO_SENSORHUB9_REG = 0X36
LSM6DSL_ACC_GYRO_SENSORHUB10_REG = 0X37
LSM6DSL_ACC_GYRO_SENSORHUB11_REG = 0X38
LSM6DSL_ACC_GYRO_SENSORHUB12_REG = 0X39
LSM6DSL_ACC_GYRO_FIFO_STATUS1 = 0X3A
LSM6DSL_ACC_GYRO_FIFO_STATUS2 = 0X3B
LSM6DSL_ACC_GYRO_FIFO_STATUS3 = 0X3C
LSM6DSL_ACC_GYRO_FIFO_STATUS4 = 0X3D
LSM6DSL_ACC_GYRO_FIFO_DATA_OUT_L = 0X3E
LSM6DSL_ACC_GYRO_FIFO_DATA_OUT_H = 0X3F
LSM6DSL_ACC_GYRO_TIMESTAMP0_REG = 0X40
LSM6DSL_ACC_GYRO_TIMESTAMP1_REG = 0X41
LSM6DSL_ACC_GYRO_TIMESTAMP2_REG = 0X42

LSM6DSL_ACC_GYRO_TIMESTAMP_L = 0X49
LSM6DSL_ACC_GYRO_TIMESTAMP_H = 0X4A

LSM6DSL_ACC_GYRO_STEP_COUNTER_L = 0X4B
LSM6DSL_ACC_GYRO_STEP_COUNTER_H = 0X4C

LSM6DSL_ACC_GYRO_SENSORHUB13_REG = 0X4D
LSM6DSL_ACC_GYRO_SENSORHUB14_REG = 0X4E
LSM6DSL_ACC_GYRO_SENSORHUB15_REG = 0X4F
LSM6DSL_ACC_GYRO_SENSORHUB16_REG = 0X50
LSM6DSL_ACC_GYRO_SENSORHUB17_REG = 0X51
LSM6DSL_ACC_GYRO_SENSORHUB18_REG = 0X52

LSM6DSL_ACC_GYRO_FUNC_SRC = 0X53
LSM6DSL_ACC_GYRO_TAP_CFG1 = 0X58
LSM6DSL_ACC_GYRO_TAP_THS_6D = 0X59
LSM6DSL_ACC_GYRO_INT_DUR2 = 0X5A
LSM6DSL_ACC_GYRO_WAKE_UP_THS = 0X5B
LSM6DSL_ACC_GYRO_WAKE_UP_DUR = 0X5C
LSM6DSL_ACC_GYRO_FREE_FALL = 0X5D
LSM6DSL_ACC_GYRO_MD1_CFG = 0X5E
LSM6DSL_ACC_GYRO_MD2_CFG = 0X5F

LSM6DSL_ACC_GYRO_OUT_MAG_RAW_X_L = 0X66
LSM6DSL_ACC_GYRO_OUT_MAG_RAW_X_H = 0X67
LSM6DSL_ACC_GYRO_OUT_MAG_RAW_Y_L = 0X68
LSM6DSL_ACC_GYRO_OUT_MAG_RAW_Y_H = 0X69
LSM6DSL_ACC_GYRO_OUT_MAG_RAW_Z_L = 0X6A
LSM6DSL_ACC_GYRO_OUT_MAG_RAW_Z_H = 0X6B

LSM6DSL_ACC_GYRO_X_OFS_USR = 0X73
LSM6DSL_ACC_GYRO_Y_OFS_USR = 0X74
LSM6DSL_ACC_GYRO_Z_OFS_USR = 0X75

# /************** Embedded functions register mapping *******************/
LSM6DSL_ACC_GYRO_SLV0_ADD = 0x02
LSM6DSL_ACC_GYRO_SLV0_SUBADD = 0x03
LSM6DSL_ACC_GYRO_SLAVE0_CONFIG = 0x04
LSM6DSL_ACC_GYRO_SLV1_ADD = 0x05
LSM6DSL_ACC_GYRO_SLV1_SUBADD = 0x06
LSM6DSL_ACC_GYRO_SLAVE1_CONFIG = 0x07
LSM6DSL_ACC_GYRO_SLV2_ADD = 0x08
LSM6DSL_ACC_GYRO_SLV2_SUBADD = 0x09
LSM6DSL_ACC_GYRO_SLAVE2_CONFIG = 0x0A
LSM6DSL_ACC_GYRO_SLV3_ADD = 0x0B
LSM6DSL_ACC_GYRO_SLV3_SUBADD = 0x0C
LSM6DSL_ACC_GYRO_SLAVE3_CONFIG = 0x0D
LSM6DSL_ACC_GYRO_DATAWRITE_SRC_MODE_SUB_SLV0 = 0x0E
LSM6DSL_ACC_GYRO_CONFIG_PEDO_THS_MIN = 0x0F

LSM6DSL_ACC_GYRO_SM_STEP_THS = 0x13
LSM6DSL_ACC_GYRO_PEDO_DEB_REG = 0x14
LSM6DSL_ACC_GYRO_STEP_COUNT_DELTA = 0x15

LSM6DSL_ACC_GYRO_MAG_SI_XX = 0x24
LSM6DSL_ACC_GYRO_MAG_SI_XY = 0x25
LSM6DSL_ACC_GYRO_MAG_SI_XZ = 0x26
LSM6DSL_ACC_GYRO_MAG_SI_YX = 0x27
LSM6DSL_ACC_GYRO_MAG_SI_YY = 0x28
LSM6DSL_ACC_GYRO_MAG_SI_YZ = 0x29
LSM6DSL_ACC_GYRO_MAG_SI_ZX = 0x2A
LSM6DSL_ACC_GYRO_MAG_SI_ZY = 0x2B
LSM6DSL_ACC_GYRO_MAG_SI_ZZ = 0x2C
LSM6DSL_ACC_GYRO_MAG_OFFX_L = 0x2D
LSM6DSL_ACC_GYRO_MAG_OFFX_H = 0x2E
LSM6DSL_ACC_GYRO_MAG_OFFY_L = 0x2F
LSM6DSL_ACC_GYRO_MAG_OFFY_H = 0x30
LSM6DSL_ACC_GYRO_MAG_OFFZ_L = 0x31
LSM6DSL_ACC_GYRO_MAG_OFFZ_H = 0x32

# /** enums */
LSM6DSL_ACC_GYRO_ODR_XL_POWER_DOWN = 0x00,
LSM6DSL_ACC_GYRO_ODR_XL_13Hz = 0x10,
LSM6DSL_ACC_GYRO_ODR_XL_26Hz = 0x20,
LSM6DSL_ACC_GYRO_ODR_XL_52Hz = 0x30,
LSM6DSL_ACC_GYRO_ODR_XL_104Hz = 0x40,
LSM6DSL_ACC_GYRO_ODR_XL_208Hz = 0x50,
LSM6DSL_ACC_GYRO_ODR_XL_416Hz = 0x60,
LSM6DSL_ACC_GYRO_ODR_XL_833Hz = 0x70,
LSM6DSL_ACC_GYRO_ODR_XL_1660Hz = 0x80,
LSM6DSL_ACC_GYRO_ODR_XL_3330Hz = 0x90,
LSM6DSL_ACC_GYRO_ODR_XL_6660Hz = 0xA0,

LSM6DSL_ACC_GYRO_FS_XL_2g = 0x00,
LSM6DSL_ACC_GYRO_FS_XL_4g = 0x08,
LSM6DSL_ACC_GYRO_FS_XL_8g = 0x0C,
LSM6DSL_ACC_GYRO_FS_XL_16g = 0x04,

LSM6DSL_ACC_GYRO_ODR_G_POWER_DOWN = 0x00,
LSM6DSL_ACC_GYRO_ODR_G_13Hz = 0x10,
LSM6DSL_ACC_GYRO_ODR_G_26Hz = 0x20,
LSM6DSL_ACC_GYRO_ODR_G_52Hz = 0x30,
LSM6DSL_ACC_GYRO_ODR_G_104Hz = 0x40,
LSM6DSL_ACC_GYRO_ODR_G_208Hz = 0x50,
LSM6DSL_ACC_GYRO_ODR_G_416Hz = 0x60,
LSM6DSL_ACC_GYRO_ODR_G_833Hz = 0x70,
LSM6DSL_ACC_GYRO_ODR_G_1660Hz = 0x80,
LSM6DSL_ACC_GYRO_ODR_G_3330Hz = 0x90,
LSM6DSL_ACC_GYRO_ODR_G_6660Hz = 0xA0,

LSM6DSL_ACC_GYRO_FS_G_125dps = 0x02,
LSM6DSL_ACC_GYRO_FS_G_245dps = 0x00,
LSM6DSL_ACC_GYRO_FS_G_500dps = 0x04,
LSM6DSL_ACC_GYRO_FS_G_1000dps = 0x08,
LSM6DSL_ACC_GYRO_FS_G_2000dps = 0x0C,


BMM150_POWER_CONTROL = 0x4B
BMM150_CONTROL = 0x4C
BMM150_DATA_X_LSB = 0x42
